---
id: cicd
title: CICD  
---
### 业务组件库的开发和发布是随着一系列任务进化的

- 本地 commit 钩子函数完成 commit 验证
- 代码 push 到远端以后
- 跑特定的 test（不仅仅是本机的 unit test,也可能有时间很长的 E2E test)
- test 通过以后检查是否有新的 tag，假如有就自动 publish 一个新的版本
- 甚至还有更多，自动部署文档站点等等。

这些任务如果手动操作，费时费力，“不是很好的解決方案

## CI (Continuous integration） -持续集成

持续集成指的是，频繁地（一天多次）将代码集成到主干。
一旦开发人员对应用所做的更改被合并，系统就会通过自动构建应用井运行不同级别的自动化测试（通常是单元测试和集成测试）来验收这些更改，确保这些更改没有对应用造成破坏。

- 优点

  - 快速发现错误
  - 防止分支大幅偏离主干

- 目的
  - 让产品可以快速迭代，同时还能保持高质量。

## CD (Continuous Delivery）-持续交付

持续交付 (Continuous delivery）指的是，频繁地将软件的新版本，交付给质量团队或者用户，以供评审。

## CD(Continuous Deployment)-持续部署

持续部署(continuous deployment）是持续交付的下一步，指的是代码通过评审以后，自动部署到生产环境。

## 2 个 cicd 平台

### [Github Actions](https://github.com/features/actions)

### [Travis](https://www.travis-ci.com)



## 名词解释
- 流水线，流水线提供了自定义流程编排工具，流水线由多个阶段组成。
- 阶段，阶段用来管理一组业务属性相似的任务（例如，构建，测试和部署）， 每个阶段包含一个或多个任务。
- 任务，任务是流水线最小调度单元，一个任务下所有的脚本等内容在同一个运行环境中执行。
- 插件，实现应用的编译、镜像构建、单元测试、代码扫描、覆盖率分析、测试部署、接口测试、集成测试、性能稳定性测试、分级部署逻辑的程序。插件分为官方插件和用户自定义插件，官方插件封装了标准的执行逻辑，用户只需配置输入和输出，无需关注资源；自定义插件由用户编写，用户可选择在自有资源上运行，以兼容无法与环境解耦的历史任务。
- 触发，启动流水线的方式，常见触发方式有代码变更自动触发、手工触发、定时触发。
- 运行（构建），代表流水线的一次执行。 运行结束得到所有阶段、任务相关的日志以及运行的结果。
- 制品，泛指流水线处理的各种数据，可以是可执行程序、lib 文件、jar 包、Docker 镜像、Helm Chart 部署文件等。
- 参数，参数是指在流水线、阶段、任务上下游传递的内容，是流水线的重要组成部分，以 key-value 的形式存在。



bash <(curl 'https://talk.gitee.com/agent/install.sh') -s 'https://server-agent.gitee.com/gitee_sa_server' -u 'labelId=8629&token=da1cabf0-2b6a-42eb-bd08-4936470ab1ed&sign=de29a3d9f96035a4f7fd2dfd151d4b39&timestamp=1666787183852' -c '10'